//定义一个JS控制器 AMD require.js 模块化插件
//1、需要引入插件
//2、该控制器模块的业务逻辑
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

  //定义一个控制器
  var Controller = {
    index: function () {
      //给选项卡绑定点击事件 切换选项卡的时候才会触发
      $(`a[data-toggle="tab"]`).on('shown.bs.tab', function () {
        // 同时拿到table表格里面订单和评论的href属性
        var tab = $($(this).attr('href'))
        if (tab.length <= 0) return; //为空就停下

        //两个选项卡，分别给两个不同的请求方法
        //根据锚点切换，然后来触发选项卡的方法
        Controller.table[tab.attr('id')].call(this)

        //移除绑定的事件
        $(this).unbind('shown.bs.tab');
      })

      // 一进来就调用ordertable
      Controller.table['info']()
    },
    // 两个表格分开来定义函数
    table: {
      // 客户详情
      info: function () { },
      // 课程评论
      visit: function () {
        //接收进入到详情界面的id值
        var ids = Fast.api.query('ids');

        // 初始化表格参数配置
        //配置整个表格中增删查改请求控制器地址，用的ajax的方式请求
        Table.api.init({
          extend: {
            index_url: `business/privateseainfo/visit?ids=${ids}`, //评论
            add_url: `business/privateseainfo/add?ids=${ids}`,
            edit_url: 'business/privateseainfo/edit',
            del_url: 'business/privateseainfo/del',
            table: 'business_visit',
          }
        });

        //获取view视图里面的dom元素table元素
        var table2 = $("#visittable")

        //渲染列表数据
        // $.ajax({
        table2.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.index_url, //请求地址
          toolbar: "#visittoolbar", //工具栏
          pk: 'id', //默认主键字段名
          sortName: 'createtime', //排序的字段名
          sortOrder: 'desc', //排序的方式
          //渲染的数据部分
          columns: [
            [
              { checkbox: true },
              { field: 'id', title: __('Id'), operate: false, sortable: true },
              { field: 'business.nickname', title: __('Bnickname'), operate: 'LIKE' },
              { field: 'content', title: __('Vcontent'), operate: 'LIKE' },
              { field: 'admin.nickname', title: __('Dnickname'), sortable: false, searchable: false },
              { field: 'createtime', title: __('VisitCreateTime'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', },
              {
                field: 'operate',
                title: __('Operate'),
                table: table2,
                events: Table.api.events.operate,
                formatter: Table.api.formatter.operate,
              }
            ]
          ]
        })

        // 为表格绑定事件
        Table.api.bindevent(table2);
      },
      // 申请记录
      receive: function () {
        //接收进入到详情界面的id值
        var ids = Fast.api.query('ids');
        Table.api.init({
          extend: {
            index_url: `business/privateseainfo/receive?ids=${ids}`,
            table: 'business_visit',
          }
        });
        // 表格1
        var table3 = $("#receivetable");

        table3.bootstrapTable({
          url: $.fn.bootstrapTable.defaults.extend.index_url,
          toolbar: '#receivetoolbar',
          sortName: 'receive.applytime',
          search: false,
          columns: [
            [
              { checkbox: true },
              { field: 'id', title: __('Id'), operate: false, sortable: true },
              { field: 'business.nickname', title: __('Bnickname'), operate: 'LIKE' },
              { field: 'admin.nickname', title: __('Dnickname'), sortable: false, searchable: false },
              { field: 'status_text', title: __('VstatusText'), sortable: false, searchable: false },
              { field: 'applytime', title: __('Rapplytime'), sortable: true, searchable: true, formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', }
            ]
          ]
        });

        // 为表格1绑定事件
        Table.api.bindevent(table3);
      },
    },
    add: function () {
      Controller.api.bindevent();
    },
    edit: function () {
      Controller.api.bindevent();
    },
    del: function () {
      Controller.api.bindevent();
    },

    api: {
      //JS模块化的全局方法
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      }
    }
  }

  //模块返回值
  return Controller
})